package com.qzh.baseStruct.Tree;

import cn.hutool.core.collection.CollectionUtil;
import lombok.AllArgsConstructor;
import lombok.Data;

import java.util.Collection;
import java.util.HashSet;
import java.util.Set;

/**
 *树节点
 */
@Data
@AllArgsConstructor
 class TreeNode {
    /**
     *节点类型
     */
     private treeNodeType nodeType;
    /**
     * 值
     */
    private Object value;
    /**
     * 祖先
     */
    private TreeNode parent;
    /**
     *子节点
     */
    private Set<TreeNode> sons;

    public TreeNode(treeNodeType nodeType) {
        this.nodeType = nodeType;
    }

    /**
     * 添加son公共方法
     * @param son
     * @return
     */
    public boolean addSon(TreeNode son){
        if(this.sons==null)
        {
            this.sons = new HashSet<>();
        }
      return   this.sons.add(son);
    }
    /**
     * 批量添加son公共方法
     * @param collection
     * @return
     */
    public boolean addSons(Collection collection){
        if(this.sons==null)
        {
            this.sons = new HashSet<>();
        }
       if(CollectionUtil.isNotEmpty(collection)){
          return   this.sons.addAll(collection);
        }
       else
           return false;
    }

}
enum treeNodeType{
     //根节点，普通节点
     root,normal
}